perm filename STAT.SAI[4,KMC] blob sn#156970 filedate 1975-04-19 generic text, type T, neo UTF8
BEGIN
REQUIRE "IODEFS[1,BLF]" SOURCE_FILE;


DEFINE ITT(X,N) = "FOR X←1 STEP 1 UNTIL N DO";
DEFINE ∂=" &BLANK1& ";
STRING BLANK1,BLANK10,BLANK20,DELIMSS,FORMFEED;

REAL N1,N2,U1,U2,R1,R2,M;
INTEGER DICE, SW, P, P1, Q, Q1, I, I1, J, J1, K, K1, W, L, T, WFLAG;
INTEGER NEXTL,NEXTA,LI,SSLEN,ATLEN,ERROR,IDUM,INCH1,INCH2,EOF1,EOF2;
REAL R, RR, RRR;
STRING S, SS, SSS,ST,SY,SV,FILENAME,SU,LASTNAME,LASTLINE,ZEROKS,TOPIC,LASTB,AREA;
STRING OUTFILE,RATER,DIM,INTNAME;
STRING S1,S2,S3;
INTEGER ARRAY AA[1:10];
INTEGER ARRAY BB[1:10];
REAL ARRAY CC[1:10];

STRING PROC RIGHTZ(INTEGER L; STRING S);
	RETURN(IF LN(S)<L THEN ZEROKS[1 TO L-LN(S)]&S  ELSE S[1 TO L]);

STRING PROC OFFS(STRING S; INTEGER I);
  BEGIN STRING ST; INTEGER L;  L←LENGTH(S);
  IF I<L THEN ST←S[I+1 TO L] ELSE ST←NULL;  RETURN (ST) ;  END;


BOOLEAN PROC EQS(STRING S);	
	RETURN(IF EQU(S,NULL) OR S=" " THEN TRUE ELSE FALSE);

STRING PROC READIN(INTEGER CHAN);
  BEGIN STRING S; S←INPUT(CHAN,1); 
  WHILE ¬EOF AND EQS(S) DO S←INPUT(CHAN,1);
  IF EOF THEN IF CHAN=INCH1 THEN EOF1←EOF ELSE EOF2←EOF;  RETURN(S);  END;

PROC OUTB(INTEGER CHAN; STRING S);
  BEGIN IF ¬EQU(SV,S[1 TO 6]) THEN BEGIN OUT(OUCH, NULL ↓ ); SV←S[1 TO 6]; END;
  OUT(OUCH, S);  END;


FORMFEED← '14;
ZEROKS←"000000000000";
BLANKS←"                                                   ";
BLANK1←"   ";
BLANK20←"                    ";
BLANK10←"          ";
FLAG←0;
STDBRK(INCH);
DELIMSS← '15 & '12 & '40 & '11 & '14;
SETBREAK(1, '12, '14 & '15, "INS");
SETBREAK(13, '12 & '40, '15, "INS");
SETBREAK(14,DELIMSS & " ?.()","","INR");
SETBREAK(15,"αλ","","INR");

COMMENT  BREAKSETS 17 AND 18 ARE RESERVED FOR TEMPORARY USE;

SW←0; J←0;

COMMENT ********************************* ;

WHILE TRUE DO  BEGIN	"TOPBLOCK"

S←ASK("H FOR HELP -- GO?");

IF EQU(S, "X") THEN DONE "TOPBLOCK";

IF EQU(S, "H") THEN BEGIN

SAY("C for computing mann-whitney stats  "  ↓ ↓ );

END;  COMMENT END OF H ROUTINE;

COMMENT  COMPUTE STATS ;

IF EQU(S,"C") THEN BEGIN "C"

SAY("This computes mann-whitney stats   " ↓ );


FILENAME←ASK("FILIN[CR FOR EXIT]="); 
FILIN(FILENAME);
SS←ASK("FILOUT="); FILOUT(SS);
SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 

WHILE ¬EOF DO BEGIN "FILES"

SAY(NULL ↓ ); SAY("OLD:" ↓ );  SAY("SS="&SS ↓ );
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM); 
  ST←SCAN(SS,7,IDUM); SAY("ST="&ST ↓ );  AA[I]←CVD(ST);  END;
ITT(I,10) SAY(CVS(AA[I]) & " " );

SAY(NULL ↓ ); SAY("NEW:" ↓ ); 
SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 
ITT(I,10) BEGIN ST←SCAN(SS,3,IDUM); ST←SCAN(SS,7,IDUM);  BB[I]←CVD(ST);  END;
ITT(I,10) SAY(CVS(BB[I]) & " " );

J←0; SAY(NULL ↓ );  SAY("RANKS:" ↓ );
ITT(I,10) BEGIN  K←AA[I]+BB[I];
  IF K=0 THEN CC[I]←0 ELSE CC[I]←(J+J+K+1)/2;  J←K+J;
  SAY(CVF(CC[I]) & " " );
  END;
SAY(NULL ↓ );

N1←0; ITT(I,10) N1←N1+AA[I]; SAY("N1= " & CVF(N1) ↓ );
N2←0; ITT(I,10) N2←N2+BB[I]; SAY("N2= " & CVF(N2) ↓ );

R1←0; ITT(I,10) R1←AA[I]*CC[I] + R1;  SAY("R1= " & CVF(R1) ↓ );
R2←0; ITT(I,10) R2←BB[I]*CC[I] + R2;  SAY("R2= " & CVF(R2) ↓ );

M←N1*N2;

U1← M + N1*(N1+1)/2 - R1;  SAY("U1= " & CVF(U1) ↓ );
U2← M + N2*(N2+1)/2 - R2;  SAY("U2= " & CVF(U2) ↓ );

SAY("U1+U2= " & CVF(U1+U2) ↓ );
SAY("N1*N2= " & CVF( M ) ↓ );

R←M*(N1+N2+1)/12;

RR←(U1-M/2)*(U1-M/2)/R; SAY("X2= " & CVF(RR) ↓ );
RR←(U2-M/2)*(U2-M/2)/R; SAY("X2= " & CVF(RR) ↓ );


SS←INPUT(INCH,1); 
SS←INPUT(INCH,1); 

END "FILES" ;
RELEASE(OUCH); RELEASE(INCH);

END "C" ;
COMMENT  T ROUTINE FOR TESTING THINGS;

IF EQU(S,"T") THEN BEGIN


END;  COMMENT END OF S=T;


END "TOPBLOCK" ;  COMMENT END TO INFINITE LOOP;

ITT(I,3) RELEASE(INCH); ITT(I,3) RELEASE(OUCH);

    	COMMENT END OF PROGRAM;
END;

.RU STAT
H FOR HELP -- GO?C
This computes mann-whitney stats   
FILIN[CR FOR EXIT]=S
FILOUT=SSS

OLD:
SS= 79  26  19  22  27  42  13  28  30  139
ST=79
ST=26
ST=19
ST=22
ST=27
ST=42
ST=13
ST=28
ST=30
ST=139
79 26 19 22 27 42 13 28 30 139 
NEW:
84 37 45 29 27 38 25 41 55 199 
RANKS:
 82.0000000  195.0000000  258.5000000  316.0000000  368.5000000  435.5000000  494.5000000  548.0000000  625.0000000  836.5000000 
N1=  425.0000000
N2=  580.0000000
R1=  208448.0000000
R2=  297067.0000000
U1=  128577.0000000
U2=  117923.0000000
U1+U2=  246500.0000000
N1*N2=  246500.0000000
X2=  1.3731935
X2=  1.3731935




OLD:
SS= 100  24  45  39  37  52  41  76  76  489
ST=100
ST=24
ST=45
ST=39
ST=37
ST=52
ST=41
ST=76
ST=76
ST=489
100 24 45 39 37 52 41 76 76 489 
NEW:
104 18 43 35 36 47 45 84 97 494 
RANKS:
 102.5000000  225.5000000  290.5000000  371.5000000  445.0000000  531.0000000  623.5000000  746.5000000  913.0000000  1491.0000000 
N1=  979.0000000
N2=  1003.0000000
R1=  968084.5000000
R2=  997068.5000000
U1=  493562.5000000
U2=  488374.5000000
U1+U2=  981937.0000000
N1*N2=  981937.0000000
X2=  .0414682
X2=  .0414682




OLD:
SS= 54  19  18  25  17  24  14  23  25  123
ST=54
ST=19
ST=18
ST=25
ST=17
ST=24
ST=14
ST=23
ST=25
ST=123
54 19 18 25 17 24 14 23 25 123 
NEW:
49 14 15 22 20 25 21 31 31 128 
RANKS:
 52.0000000  120.0000000  153.0000000  193.0000000  235.0000000  278.0000000  320.0000000  364.5000000  419.5000000  573.0000000 
N1=  342.0000000
N2=  356.0000000
R1=  117164.0000000
R2=  126787.0000000
U1=  63241.0000000
U2=  58511.0000000
U1+U2=  121752.0000000
N1*N2=  121752.0000000
X2=  .7886608
X2=  .7886608
H FOR HELP -- GO?X

End of SAIL execution

↑C
.